// 方法1
// type Reverse<T, U extends any[] = []> = T extends [...infer R, infer L]
//   ? Reverse<R, [...U, L]>
//   : U;

// 方法2
type Reverse<T, U extends any[] = []> = T extends [infer F, ...infer R]
  ? Reverse<R, [F, ...U]>
  : U;

type Rs = Reverse<["a", "b", "c"]>;
